package com.jdd.modules.parkCarAbnormalRecord.service;


import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.IService;
import com.jdd.modules.parkCarAbnormalRecord.entity.ParkCarAbnormalRecord;
import com.jdd.modules.parkCarAbnormalRecord.enums.AbnormalTypeEnums;
import com.jdd.modules.parkCarAbnormalRecord.vo.ParkCarAbnormalRecordVO;
import com.jdd.modules.parkCarAbnormalRecord.vo.QueryCarDetailsListDTO;
import com.jdd.modules.parking.entity.ParkArmInfo;
import com.jdd.modules.sdkidentifyresultpushlog.entity.SdkIdentifyResultPushLog;

/**
 * @Description: 车场异常记录
 * @Author: jdd
 * @Date: 2022-04-21
 * @Version: V1.0
 */
public interface IParkCarAbnormalRecordService extends IService<ParkCarAbnormalRecord> {
    /**
     * 应急开闸触发一次识别
     *
     * @param serialNo
     * @return
     */
    Boolean abnormalRecordForceTrigger(String serialNo);

    /**
     * 保存异常记录信息
     * @param sdkIdentifyResultPushLog 识别记录信息
     * @param parkArmInfo 车道信息
     * @param abnormalTypeEnums 异常记录类型
     * @return
     */
    Boolean saveAbnormalRecord(SdkIdentifyResultPushLog sdkIdentifyResultPushLog, ParkArmInfo parkArmInfo , AbnormalTypeEnums abnormalTypeEnums);
    /**
     * @Description  保存遥控器开闸异常信息
     * @author shangyue
     * @Date 2022-04-22
     * @param sdkIdentifyResultPushLog
     * @param parkArmInfo
     * @param emergencyOpening
     * @return
     */

    void saveRemoteControlAbnormalRecord(SdkIdentifyResultPushLog sdkIdentifyResultPushLog, ParkArmInfo parkArmInfo, AbnormalTypeEnums emergencyOpening);

    /**
     * 支付成功后删除该车牌最近10分钟的异常记录
     * @param parkCode 车场编码
     * @param plateNo 车牌号
     * @param serialNo 设备序列号
     */
    void deletedLastestAbnormalRecord(String parkCode, String plateNo, String serialNo);

    /**
     * 根据入场批次号查询车辆出入场信息
     * @param page
     * @param queryCarDetailsListDTO
     * @return
     */
    IPage<ParkCarAbnormalRecordVO> queryCarDetailsList(Page<ParkCarAbnormalRecordVO> page, QueryCarDetailsListDTO queryCarDetailsListDTO);
}
